import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { fileURLToPath, URL } from "url"

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  // command: "build" | "serve"
  // mode 当前模式
  // 使用loadEnv来根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。如果只有两个参数则默认只加载VITE_前缀环境变量
  const env = loadEnv(mode, process.cwd(), '')
  console.log(env, 'env')
  console.log(mode, 'mode')
  // console.log(env.TEST_STRING, 'env.TEST_STRING')

  process.env = { ...process.env, ...loadEnv(mode, process.cwd()) };


  const THE_URL = `${env.VITE_BASE_URL ?? `http://192.168.124.42:4396`}`;
  const PORT = `${env.VITE_PORT ?? `4396`}`;
  const THE_HOST = `${env.VITE_HOST ?? `0.0.0.0`}`;

  return {
    esbuild: {
      drop: ["console", "debugger"],
      minify: true
    },
    plugins: [
      vue(),
      AutoImport({
        resolvers: [ElementPlusResolver()],
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
    ],
    server: {
      strictPort: true,
      //配置反向代理
      proxy: {
        // '/test': 'http://192.168.124.42:4396/unit',
        '/test': { //凡是以/test地址开头的请求，都要做代理操作
          target: THE_URL, //代理服务器，表示要替换的服务端地址
          changeOrigin: true, //表示开启代理，允许跨域请求数据
          secure: false, //如果是https接口，需要配置这个参数
          rewrite: (path) => path.replace(/^\/test/, ""),  //设置重写路径，将/test重写为'',重写的是自己的路径地址，向服务器发送请求的地址是 target中的地址+自己写的路径
        },

      },
      host: THE_HOST,
      port: PORT,
    },
    resolve: {
      alias: [
        { find: '@', replacement: fileURLToPath(new URL('./src', import.meta.url)) }
      ],
    },
  }
})
